FROM debian:buster

# Add network setting files if there are
#ADD ./apt.conf /etc/apt/
#ADD ./resolv.conf /etc/
ADD ./sources.list /etc/apt/

# Install some packages
RUN apt-get update
RUN apt-get -y upgrade
RUN apt-get install -y debootstrap bash vim jq sudo aptitude git tar zip screen wget build-essential openocd libncurses5

# Install some packages to run cfg of TOPPERS/ASP
RUN dpkg --add-architecture i386
RUN aptitude update
RUN aptitude install -y libc6-dev-i386

# Create user and pasword
ARG USER=""
ARG PASS=""
ARG USER_ID=""
RUN useradd -m -u $USER_ID -s /bin/bash -p $PASS $USER
RUN usermod -aG sudo $USER

# Create persistent workspace
RUN mkdir /home/$USER/workspace
RUN chown $USER:$USER /home/$USER/workspace
VOLUME /home/$USER/workspace

# Copy user setting files here
ADD ./.gitconfig    /home/$USER/.gitconfig
ADD ./.bash_aliases /home/$USER/.bash_aliases
ADD ./.screenrc /home/$USER/.screenrc
ADD ./.gdbinit          /home/$USER
# Copy script files
ADD ./00_run_screen.sh  /home/$USER
ADD ./01_run_openocd.sh /home/$USER
ADD ./02_run_gdb.sh     /home/$USER

RUN chown -R $USER:$USER /home/$USER

USER $USER
WORKDIR /home/$USER

# Download asp source files, compiler, cfg.
RUN wget https://www.toppers.jp/download.cgi/asp_nucleo_f401re_armclang-20180524.zip
RUN wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2019q3/RC1.1/gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2
RUN wget https://www.toppers.jp/download.cgi/cfg-linux-static-1_9_6.gz
RUN unzip asp_nucleo_f401re_armclang-20180524.zip
RUN tar -xvf gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2
RUN gzip -d cfg-linux-static-1_9_6.gz

# Install cfg with exec permission
RUN mv cfg-linux-static-1_9_6 asp_1.9.3_utf8/cfg/cfg/cfg
RUN chmod a+x asp_1.9.3_utf8/cfg/cfg/cfg
RUN chmod a+x asp_1.9.3_utf8/configure

# Build each perf
ENV PATH /home/$USER/gcc-arm-none-eabi-8-2019-q3-update/bin/:${PATH}
RUN mkdir asp_1.9.3_utf8/OBJ-SAMPLE
RUN mkdir asp_1.9.3_utf8/OBJ-PERF0
RUN mkdir asp_1.9.3_utf8/OBJ-PERF1
RUN mkdir asp_1.9.3_utf8/OBJ-PERF2
RUN mkdir asp_1.9.3_utf8/OBJ-PERF3
RUN mkdir asp_1.9.3_utf8/OBJ-PERF4
WORKDIR /home/$USER/asp_1.9.3_utf8/OBJ-SAMPLE
RUN ../configure -T ../target/nucleo_f401re_gcc/
RUN make clean && make depend && make
WORKDIR /home/$USER/asp_1.9.3_utf8/OBJ-PERF0
RUN ../configure -T ../target/nucleo_f401re_gcc/ -A perf0 -a ../test -U "test_lib.o histogram.o"
RUN make clean && make depend && make
WORKDIR /home/$USER/asp_1.9.3_utf8/OBJ-PERF1
RUN ../configure -T ../target/nucleo_f401re_gcc/ -A perf1 -a ../test -U "test_lib.o histogram.o"
RUN make clean && make depend && make
WORKDIR /home/$USER/asp_1.9.3_utf8/OBJ-PERF2
RUN ../configure -T ../target/nucleo_f401re_gcc/ -A perf2 -a ../test -U "test_lib.o histogram.o"
RUN make clean && make depend && make
WORKDIR /home/$USER/asp_1.9.3_utf8/OBJ-PERF3
RUN ../configure -T ../target/nucleo_f401re_gcc/ -A perf3 -a ../test -U "test_lib.o histogram.o"
RUN make clean && make depend && make
WORKDIR /home/$USER/asp_1.9.3_utf8/OBJ-PERF4
RUN ../configure -T ../target/nucleo_f401re_gcc/ -A perf4 -a ../test -U "test_lib.o histogram.o"
RUN make clean && make depend && make

# From here, you can do whatever you want to.
USER $USER
WORKDIR /home/$USER
